class RestAPIBase(object):
    """docstring for BitfinexRESTAPI"""

    def get_currency(self, currency):
        """[summary]

        Arguments:
            currency {[type]} -- [description]

        Returns:
            [type] -- [description]
        """

        raise NotImplementedError()

    def get_symbol(self, commodity, base):
        '''[summary]

        [description]

        Arguments:
            commodity {[type]} -- [description]
            base {[type]} -- [description]

        Raises:
            NotImplementedError -- [description]
        '''
        raise NotImplementedError()

    def get_ticker(self, symbol):
        '''[summary]

        [description]

        Arguments:
            symbol {[type]} -- [description]

        Returns:
            [type] -- [{
                  "mid": "0.029707",
                  "ask": "0.029728",
                  "volume": "263353.6641857",
                  "high": "0.036467",
                  "low": "0.029049",
                  "bid": "0.029686",
                  "last_price": "0.02972",
                  "timestamp": "1512632242.711332"
                }]
        '''
        raise NotImplementedError()

    def get_depth(self, symbol):
        '''
        [description]

        Arguments:
            symbol {[type]} -- [description]

        Returns:
            {
              "bids": [
                {
                  "price": "0.029678",
                  "amount": "22.88434254",
                  "timestamp": "1512632248.0"
                }],
                "asks": [
                    {
                      "price": "0.029739",
                      "amount": "1.0035",
                      "timestamp": "1512632248.0"
                }]
            }
        '''
        raise NotImplementedError()

    def get_account(self):
        raise NotImplementedError()

    def get_balances(self):
        raise NotImplementedError()

    def limit_buy(self, symbol, amount, price):
        '''[summary]

        [description]

        Arguments:
            symbol {[type]} -- [description]
            amount {[type]} -- [description]
            price {[type]} -- [description]

        Returns:
            [type] -- [description]
        '''
        raise NotImplementedError()

    def limit_sell(self, symbol, amount, price):
        '''[summary]

        [description]

        Arguments:
            symbol {[type]} -- [description]
            amount {[type]} -- [description]
            price {[type]} -- [description]

        Returns:
            [type] -- [description]
        '''
        raise NotImplementedError()

    def market_buy(self, symbol, amount, price):
        '''[summary]

        [description]

        Arguments:
            symbol {[type]} -- [description]
            amount {[type]} -- [description]
            price {[type]} -- [description]

        Returns:
            [type] -- [description]
        '''
        raise NotImplementedError()

    def market_sell(self, symbol, amount, price):
        '''[summary]

        [description]

        Arguments:
            symbol {[type]} -- [description]
            amount {[type]} -- [description]
            price {[type]} -- [description]

        Returns:
            [type] -- [description]
        '''
        raise NotImplementedError()

    def get_order(self, symbol, order_id):
        '''[summary]

        [description]

        Arguments:
            symbol {[type]} -- [description]
            order_id {[type]} -- [description]

        Returns:
            [type] -- [description]
        '''
        raise NotImplementedError()

    def get_all_orders(self):
        '''[summary]

        [description]

        Arguments:
            symbol {[type]} -- [description]

        Returns:
            [type] -- [description]
        '''
        raise NotImplementedError()

    def get_open_orders(self):
        raise NotImplementedError()

    def cancel_order(self, symbol, order_id):
        '''[summary]

        [description]

        Arguments:
            symbol {[type]} -- [description]
            order_id {[type]} -- [description]

        Returns:
            [type] -- [description]
        '''
        raise NotImplementedError()

    def cancel_all_orders(self):
        raise NotImplementedError()

    def withdraw(self, currency, amount, address):
        '''[summary]

        [description]

        Arguments:
            currency {[type]} -- ['bitcoin', 'litecoin', 'ethereum', 'ethereumc', 'mastercoin', 'zcash', 'monero', 'wire', 'dash', 'ripple', 'eos', 'neo', 'aventus', 'qtum', 'eidoo']
            amount {[type]} -- [description]
            address {[type]} -- [description]

        Returns:
            [type] -- [description]
        '''
        raise NotImplementedError()
